const {Article} = require('../../model/article');
const path = require('path');
const fs = require('fs');

//处理文件
const formidable = require('formidable');

module.exports = async (req, res) => {

    //创建表单解析对象
    const form = new formidable.IncomingForm();
    //配置上传文件的存放位置
    form.uploadDir = path.join(__dirname, '../', '../', 'public', 'uploads');
    //保留上传文件的后缀
    form.keepExtensions = true;
    //解析表单
    form.parse(req, async (err, fields, files) => {
        //err为错误对象，解析失败存储错误信息，成功为null
        //fields对象类型保存普通表单数据
        //files对象类型保存了和上传文件相关的数据

        //读取表单中除文件外的数据
        let {aid, title, author, publishDate, content} = fields;

        //将页面重定向到文章列表页面
        if (files.cover.size == 0) {//没有新上传文件
            //保存其他数据到数据库
            await Article.updateOne({_id: aid}, {
                title, author, publishDate, content
            });
        } else {//有新文件

            //查找原来的文件保存地址
            let {cover} = await Article.findOne({_id: aid});
            let deleteFile = path.join(__dirname, '../', '../','public/',cover);
            //删除空文件
            fs.unlink(deleteFile,(err)=>{
                console.log("删除文件成功");
            });

            await Article.updateOne({_id: aid}, {
                title, author, publishDate, content,
                cover: files.cover.path.split('public')[1]
            });
        }
        res.redirect('/admin/article');
    });


};
